load 'fall back 1.mat'
FB1 = Acceleration;
load 'fall back 2.mat'
FB2 = Acceleration;
load 'fall back 3.mat'
FB3 = Acceleration;
load 'fall back 4.mat'
FB4 = Acceleration;
load 'fall back 5.mat'
FB5 = Acceleration;
load 'fall f 1.mat'
FF1 = Acceleration;
load 'fall f 2.mat'
FF2 = Acceleration;
load 'fall f 3.mat'
FF3 = Acceleration;
load 'fall f 4.mat'
FF4 = Acceleration;
load 'fall f 5.mat'
FF5 = Acceleration;
load 'fall f 1.mat'
FF1 = Acceleration;
load 'fall f 2.mat'
FF2 = Acceleration;
load 'fall f 3.mat'
FF3 = Acceleration;
load 'fall f 4.mat'
FF4 = Acceleration;
load 'fall f 5.mat'
FF5 = Acceleration;
load 'fall left 1.mat'
FL1 = Acceleration;
load 'fall left 2.mat'
FL2 = Acceleration;
load 'fall left 3.mat'
FL3 = Acceleration;
load 'fall left 4.mat'
FL4 = Acceleration;
load 'fall left 5.mat'
FL5 = Acceleration;
load 'fall right 1.mat'
FR1 = Acceleration;
load 'fall right 2.mat'
FR2 = Acceleration;
load 'fall tight 3.mat'
FR3 = Acceleration;
load 'fall right 4.mat'
FR4 = Acceleration;
load 'fall right 5.mat'
FR5 = Acceleration;
load 'TestingFall.mat'
TEST = Acceleration;
%Plot FB1
createplot(FB1);
%Plot FB2
createplot(FB2);
%Plot FB3
createplot(FB3);
%Plot FB4
createplot(FB4);
%Plot FB5
createplot(FB5);
%Data Cleanup
FB1F = FB1(38:80, :);
FB2F = FB2(25:141, :);
FB3F = FB3(30:75, :);
FB4F = FB4(25:70, :);
FB5F = FB5(20:62, :);
FF1F = FF1(19:88, :);
FF2F = FF2(17:65, :);
FF3F = FF3(15:63, :);
FF4F = FF4(16:90, :);
FF5F = FF5(20:100, :);
FL1F = FL1(19:80, :);
FL2F = FL2(20:80, :);
FL3F = FL3(16:65, :);
FL4F = FL4(17:64, :);
FL5F = FL5(18:90, :);
FR1F = FR1(18:88, :);
FR2F = FR2 (20:85, :);
FR3F= FR3(15:64, :);
FR4F = FR4(18:64, :);
FR5F = FR5(20:61, :);
%Compare FFT
Compare(FB1F,FB2F,FB3F,FB4F,FB5F,'x')
Compare(FB1F,FB2F,FB3F,FB4F,FB5F,'y')
Compare(FB1F,FB2F,FB3F,FB4F,FB5F,'z')
%Walking Data FFT
load 'walking.mat'
WK1 = Acceleration;
createplot(WK1);
WK1F = WK1(7:100, :);
Accel(WK1F, 'walking1')
%Testing Fall Algorithm
testfall(FL1F,FL2F,FL3F,FL4F,FL5F,FR1F,FR2F,FR3F,FR4F,FR5F,FF1F,FF2F,FF3F,FF4F,FF5F,FB1F,FB2F,FB3F,FB4F,FB5F,TEST);
fitresult = 2×1 cell
 1
1[ ]
21×1 cfit
gof = 2×1 struct
Fieldsssersquaredfeadjrsquarermse
1[ ][ ][ ][ ][ ]
224.27840.9663690.96240.5932
fitresult = 2×1 cell
 1
1[ ]
21×1 cfit
gof = 2×1 struct
Fieldsssersquaredfeadjrsquarermse
1[ ][ ][ ][ ][ ]
2380.91610.7961680.77212.3668
fitresult = 2×1 cell
 1
1[ ]
21×1 cfit
gof = 2×1 struct
Fieldsssersquaredfeadjrsquarermse
1[ ][ ][ ][ ][ ]
247.97850.8484640.82940.8658
fitresult = 2×1 cell
 1
1[ ]
21×1 cfit
gof = 2×1 struct
Fieldsssersquaredfeadjrsquarermse
1[ ][ ][ ][ ][ ]
222.22810.9494620.94290.5988
fitresult = 2×1 cell
 1
1[ ]
21×1 cfit
gof = 2×1 struct
Fieldsssersquaredfeadjrsquarermse
1[ ][ ][ ][ ][ ]
21.8308e+03-0.657662-0.87155.4341
fitresult = 2×1 cell
 1
1[ ]
21×1 cfit
gof = 2×1 struct
Fieldsssersquaredfeadjrsquarermse
1[ ][ ][ ][ ][ ]
228.91620.9466620.93970.6829
fitresult = 2×1 cell
 1
1[ ]
21×1 cfit
gof = 2×1 struct
Fieldsssersquaredfeadjrsquarermse
1[ ][ ][ ][ ][ ]
250.85480.8980890.88880.7559
fitresult = 2×1 cell
 1
1[ ]
21×1 cfit
gof = 2×1 struct
Fieldsssersquaredfeadjrsquarermse
1[ ][ ][ ][ ][ ]
2453.61970.7862770.76402.4272
fitresult = 2×1 cell
 1
1[ ]
21×1 cfit
gof = 2×1 struct
Fieldsssersquaredfeadjrsquarermse
1[ ][ ][ ][ ][ ]
255.76240.9094750.89980.8623
fitresult = 2×1 cell
 1
1[ ]
21×1 cfit
gof = 2×1 struct
Fieldsssersquaredfeadjrsquarermse
1[ ][ ][ ][ ][ ]
244.72960.81231080.79840.6436
fitresult = 2×1 cell
 1
1[ ]
21×1 cfit
gof = 2×1 struct
Fieldsssersquaredfeadjrsquarermse
1[ ][ ][ ][ ][ ]
283.01930.94261080.93840.8768
fitresult = 2×1 cell
 1
1[ ]
21×1 cfit
gof = 2×1 struct
Fieldsssersquaredfeadjrsquarermse
1[ ][ ][ ][ ][ ]
2152.54480.74861080.72991.1885
FL = 2.1590
FR = -5.3458
FF = -7.6058
FB = 0.9430
Left Fall
testfall(FL1F,FL2F,FL3F,FL4F,FL5F,FR1F,FR2F,FR3F,FR4F,FR5F,FF1F,FF2F,FF3F,FF4F,FF5F,FB1F,FB2F,FB3F,FB4F,FB5F,WK1F);
fitresult = 2×1 cell
 1
1[ ]
21×1 cfit
gof = 2×1 struct
Fieldsssersquaredfeadjrsquarermse
1[ ][ ][ ][ ][ ]
224.27840.9663690.96240.5932
fitresult = 2×1 cell
 1
1[ ]
21×1 cfit
gof = 2×1 struct
Fieldsssersquaredfeadjrsquarermse
1[ ][ ][ ][ ][ ]
2380.91610.7961680.77212.3668
fitresult = 2×1 cell
 1
1[ ]
21×1 cfit
gof = 2×1 struct
Fieldsssersquaredfeadjrsquarermse
1[ ][ ][ ][ ][ ]
247.97850.8484640.82940.8658
fitresult = 2×1 cell
 1
1[ ]
21×1 cfit
gof = 2×1 struct
Fieldsssersquaredfeadjrsquarermse
1[ ][ ][ ][ ][ ]
222.22810.9494620.94290.5988
fitresult = 2×1 cell
 1
1[ ]
21×1 cfit
gof = 2×1 struct
Fieldsssersquaredfeadjrsquarermse
1[ ][ ][ ][ ][ ]
21.8308e+03-0.657662-0.87155.4341
fitresult = 2×1 cell
 1
1[ ]
21×1 cfit
gof = 2×1 struct
Fieldsssersquaredfeadjrsquarermse
1[ ][ ][ ][ ][ ]
228.91620.9466620.93970.6829
fitresult = 2×1 cell
 1
1[ ]
21×1 cfit
gof = 2×1 struct
Fieldsssersquaredfeadjrsquarermse
1[ ][ ][ ][ ][ ]
250.85480.8980890.88880.7559
fitresult = 2×1 cell
 1
1[ ]
21×1 cfit
gof = 2×1 struct
Fieldsssersquaredfeadjrsquarermse
1[ ][ ][ ][ ][ ]
2453.61970.7862770.76402.4272
fitresult = 2×1 cell
 1
1[ ]
21×1 cfit
gof = 2×1 struct
Fieldsssersquaredfeadjrsquarermse
1[ ][ ][ ][ ][ ]
255.76240.9094750.89980.8623
fitresult = 2×1 cell
 1
1[ ]
21×1 cfit
gof = 2×1 struct
Fieldsssersquaredfeadjrsquarermse
1[ ][ ][ ][ ][ ]
244.72960.81231080.79840.6436
fitresult = 2×1 cell
 1
1[ ]
21×1 cfit
gof = 2×1 struct
Fieldsssersquaredfeadjrsquarermse
1[ ][ ][ ][ ][ ]
283.01930.94261080.93840.8768
fitresult = 2×1 cell
 1
1[ ]
21×1 cfit
gof = 2×1 struct
Fieldsssersquaredfeadjrsquarermse
1[ ][ ][ ][ ][ ]
2152.54480.74861080.72991.1885
FL = -57.9597
FR = -71.3877
FF = -75.1200
FB = -14.1510
Not a Fall
Unrecognized function or variable 'WK1F'.
function createplot = createplot(timeframe)
figure();
timeListFB = timeframe.(timeframe.Properties.DimensionNames{1});
timsInSeconds = seconds(timeListFB - timeListFB(1));
FBT = timetable2table(timeframe);
x = timeframe.X;
y = timeframe.Y;
z = timeframe.Z;
acc2 = cat(2,x,y);
acc = cat (2,acc2,z);
FFB = cat(2,timsInSeconds,acc);
plot(FFB(:,1), acc);
lgd = legend({'x', 'y', 'z'});
set(lgd, 'FontSize', 14);
set(lgd, 'Location', 'SouthWest');
end
function Accel = Accel(Acceleration,plotname)
timeList = Acceleration.(Acceleration.Properties.DimensionNames{1});
timsInSeconds = seconds(timeList - timeList(1));
acc1 = timetable2table(Acceleration);
x = acc1.X;
y = acc1.Y;
z = acc1.Z;
acc2 = cat(2,x,y);
acc = cat (2,acc2,z);
accel = cat(2,timsInSeconds,acc);
for i = 2:4
if i == 2
axistype = 'x';
elseif i == 3
axistype = 'y';
elseif i == 4
axistype = 'z';
end
x = accel(:,i);
y = [x(1) + x(2); x(1:end-2) + x(2:end-1) + x(3:end); x(end-1) + x(end)]/3;
N = length(y);
Fs = 1/(accel(2,1)-accel(1,1));
fig = figure;
h = plot(accel(:,1)-accel(1,1), y);
set(h,'LineWidth', 2);
hold on;
h = plot(accel(:,1)-accel(1,1), x, '--');
set(h,'LineWidth', 2);
lgd = legend({'Filtered', 'Raw'});
set(lgd, 'FontSize', 14);
set(lgd, 'Location', 'SouthWest');
title(plotname)
h = xlabel('Time (s)');
set(h, 'FontSize', 20);
h = ylabel(strcat(axistype,' acceleration m/s^2'));
set(h, 'FontSize', 20);
fig = figure;
f = linspace(-Fs/2 , Fs/2 - Fs/N, N) + Fs/(2*N)*mod(N,2);
h = plot(f, abs(fftshift(fft(y))));
set(h,'LineWidth', 2);
hold on;
h = plot(f, abs(fftshift(fft(x))));
set(h,'LineWidth', 2);
lgd = legend({'Filtered', 'Raw'});
set(lgd, 'FontSize', 14);
h = xlabel('Frequency (Hz)');
set(h, 'FontSize', 20);
h = ylabel('Amplitude (m/s^2)');
set(h, 'FontSize', 20);
end
end
function [x,y,Fs,N] = FilterFreq(Acceleration,axis)
timeList = Acceleration.(Acceleration.Properties.DimensionNames{1});
timsInSeconds = seconds(timeList - timeList(1));
acc1 = timetable2table(Acceleration);
x = acc1.X;
y = acc1.Y;
z = acc1.Z;
acc2 = cat(2,x,y);
acc = cat (2,acc2,z);
accel = cat(2,timsInSeconds,acc);
if axis == 'x'
i = 2;
elseif axis == 'y'
i = 3;
elseif axis == 'z'
i = 4;
end
x = accel(:,i);
y = [x(1) + x(2); x(1:end-2) + x(2:end-1) + x(3:end); x(end-1) + x(end)]/3;
N = length(y);
Fs = 1/(accel(2,1)-accel(1,1));
end
function Compare = Compare(Acc1,Acc2,Acc3,Acc4,Acc5,axis)
[x,y,Fs,N] = FilterFreq(Acc1,axis);
fig = figure;
f = linspace(-Fs/2 , Fs/2 - Fs/N, N) + Fs/(2*N)*mod(N,2);
h = plot(f, abs(fftshift(fft(y))));
set(h,'LineWidth', 2);
hold on;
[x,y,Fs,N] = FilterFreq(Acc2,axis);
f = linspace(-Fs/2 , Fs/2 - Fs/N, N) + Fs/(2*N)*mod(N,2);
h = plot(f, abs(fftshift(fft(y))));
set(h,'LineWidth', 2);
hold on;
[x,y,Fs,N] = FilterFreq(Acc3,axis);
f = linspace(-Fs/2 , Fs/2 - Fs/N, N) + Fs/(2*N)*mod(N,2);
h = plot(f, abs(fftshift(fft(y))));
set(h,'LineWidth', 2);
hold on;
[x,y,Fs,N] = FilterFreq(Acc4,axis);
f = linspace(-Fs/2 , Fs/2 - Fs/N, N) + Fs/(2*N)*mod(N,2);
h = plot(f, abs(fftshift(fft(y))));
set(h,'LineWidth', 2);
hold on;
[x,y,Fs,N] = FilterFreq(Acc5,axis);
f = linspace(-Fs/2 , Fs/2 - Fs/N, N) + Fs/(2*N)*mod(N,2);
h = plot(f, abs(fftshift(fft(y))));
set(h,'LineWidth', 2);
lgd = legend({'1', '2','3','4','5'});
set(lgd, 'FontSize', 14);
h = xlabel('Frequency (Hz)');
set(h, 'FontSize', 20);
h = ylabel('Amplitude (m/s^2)');
set(h, 'FontSize', 20);
end
function [accel] = todouble(Acceleration)
timeList = Acceleration.(Acceleration.Properties.DimensionNames{1});
timsInSeconds = seconds(timeList - timeList(1));
acc1 = timetable2table(Acceleration);
x = acc1.X;
y = acc1.Y;
z = acc1.Z;
acc2 = cat(2,x,y);
acc = cat (2,acc2,z);
accel = cat(2,timsInSeconds,acc);
end
function fixdelayvis = fixdelayvis(Acc1, Acc2, Acc3, Acc4, Acc5, axis)
s1 = todouble(Acc1);
s2 = todouble(Acc2);
s3 = todouble(Acc3);
s4 = todouble(Acc4);
s5 = todouble(Acc5);
figure();
ax(1) = subplot(5,1,1);
[x,y,Fs,N] = FilterFreq(Acc1, axis);
sx1 = cat(2,s1(:,1)-s1(1,1),y);
plot(sx1(:,1),sx1(:,2));
ylabel('s1')
grid on
ax(2) = subplot(5,1,2);
[x,y,Fs,N] = FilterFreq(Acc2, axis);
sx2 = cat(2,s2(:,1)-s2(1,1),y);
plot(sx2(:,1),sx2(:,2));
ylabel('s2')
grid on
ax(3) = subplot(5,1,3);
[x,y,Fs,N] = FilterFreq(Acc3, axis);
sx3 = cat(2,s3(:,1)-s3(1,1),y);
plot(sx3(:,1),sx3(:,2));
ylabel('s3')
grid on
ax(4) = subplot(5,1,4);
[x,y,Fs,N] = FilterFreq(Acc4, axis);
sx4 = cat(2,s4(:,1)-s4(1,1),y);
plot(sx4(:,1),sx4(:,2));
ylabel('s4')
grid on
ax(5) = subplot(5,1,5);
[x,y,Fs,N] = FilterFreq(Acc5, axis);
sx5 = cat(2,s5(:,1)-s5(1,1),y);
plot(sx5(:,1),sx5(:,2));
ylabel('s5')
grid on
xlabel('Samples')
linkaxes(ax,'xy')
sxa1 = alignsignals(sx1(:,2),sx5(:,2));
sxa2 = alignsignals(sx2(:,2),sx5(:,2));
sxa3 = alignsignals(sx3(:,2),sx5(:,2));
sxa4 = alignsignals(sx4(:,2),sx5(:,2));
figure();
ax(1) = subplot(5,1,1);
plot(sxa1)
ylabel('s1')
grid on
ax(2) = subplot(5,1,2);
plot(sxa2,'k')
ylabel('s2')
grid on
ax(3) = subplot(5,1,3);
plot(sxa3,'r')
ylabel('s3')
grid on
ax(4) = subplot(5,1,4);
plot(sxa4,'b')
ylabel('s4')
grid on
ax(5) = subplot(5,1,5);
plot(sx5(:,2),'g')
ylabel('s5')
grid on
xlabel('Samples')
linkaxes(ax,'xy')
end
function [sxa1,sxa2,sxa3,sxa4,sxa5] = fixdelayval (Acc1, Acc2, Acc3, Acc4, Acc5, axis)
s1 = todouble(Acc1);
s2 = todouble(Acc2);
s3 = todouble(Acc3);
s4 = todouble(Acc4);
s5 = todouble(Acc5);
figure();
ax(1) = subplot(5,1,1);
[x,y,Fs,N] = FilterFreq(Acc1, axis);
sx1 = cat(2,s1(:,1)-s1(1,1),y);
plot(sx1(:,1),sx1(:,2));
ylabel('s1')
grid on
ax(2) = subplot(5,1,2);
[x,y,Fs,N] = FilterFreq(Acc2, axis);
sx2 = cat(2,s2(:,1)-s2(1,1),y);
plot(sx2(:,1),sx2(:,2));
ylabel('s2')
grid on
ax(3) = subplot(5,1,3);
[x,y,Fs,N] = FilterFreq(Acc3, axis);
sx3 = cat(2,s3(:,1)-s3(1,1),y);
plot(sx3(:,1),sx3(:,2));
ylabel('s3')
grid on
ax(4) = subplot(5,1,4);
[x,y,Fs,N] = FilterFreq(Acc4, axis);
sx4 = cat(2,s4(:,1)-s4(1,1),y);
plot(sx4(:,1),sx4(:,2));
ylabel('s4')
grid on
ax(5) = subplot(5,1,5);
[x,y,Fs,N] = FilterFreq(Acc5, axis);
sx5 = cat(2,s5(:,1)-s5(1,1),y);
plot(sx5(:,1),sx5(:,2));
ylabel('s5')
grid on
xlabel('Samples')
linkaxes(ax,'xy')
sxa1 = alignsignals(sx1(:,2),sx5(:,2));
sxa2 = alignsignals(sx2(:,2),sx5(:,2));
sxa3 = alignsignals(sx3(:,2),sx5(:,2));
sxa4 = alignsignals(sx4(:,2),sx5(:,2));
sxa5 = sx5(:,2);
end
function [fitresult, average] = fitdata(Acc1, Acc2, Acc3, Acc4, Acc5, axis)
[sxa1,sxa2,sxa3,sxa4,sxa5] = fixdelayval(Acc1, Acc2, Acc3, Acc4, Acc5, axis);
sizes = [size(sxa1),size(sxa2),size(sxa3),size(sxa4),size(sxa5)];
big = max(sizes);
sxa1 = transpose([transpose(sxa1),zeros(1,big - length(transpose(sxa1)))]);
sxa2 = transpose([transpose(sxa2),zeros(1,big - length(transpose(sxa2)))]);
sxa3 = transpose([transpose(sxa3),zeros(1,big - length(transpose(sxa3)))]);
sxa4 = transpose([transpose(sxa4),zeros(1,big - length(transpose(sxa4)))]);
sxa5 = transpose([transpose(sxa5),zeros(1,big - length(transpose(sxa5)))]);
% sct1 = cat(2,(transpose([1:length(transpose(sxa1))])),sxa1);
% sct2 = cat(2,(transpose([1:length(transpose(sxa2))])),sxa2);
% sct3 = cat(2,(transpose([1:length(transpose(sxa3))])),sxa3);
% sct4 = cat(2,(transpose([1:length(transpose(sxa4))])),sxa4);
% sct5 = cat(2,(transpose([1:length(transpose(sxa5))])),sxa5);
% scatter = [sct1;sct2;sct3;sct4;sct5];
full = cat(5,sxa1,sxa2,sxa3,sxa4,sxa5);
average = mean(full,5);
endpoint = transpose([1:length(transpose(average))]);
[fitresult, gof] = createFits(endpoint, average)
end
function [fitresult, gof] = createFits(endpoint, average)
% Initialize arrays to store fits and goodness-of-fit.
fitresult = cell( 2, 1 );
gof = struct( 'sse', cell( 2, 1 ), ...
'rsquare', [], 'dfe', [], 'adjrsquare', [], 'rmse', [] );
[xData, yData] = prepareCurveData( endpoint, average );
% Set up fittype and options.
ft = fittype( 'gauss3' );
opts = fitoptions( 'Method', 'NonlinearLeastSquares' );
opts.Display = 'Off';
opts.Lower = [-Inf -Inf 0 -Inf -Inf 0 -Inf -Inf 0];
opts.Normalize = 'on';
opts.StartPoint = [15.8340728 0.375101414394585 0.0808359208056775 7.82525692645652 0.595749305214929 0.115430645857715 4.34519412766935 1.12530424318375 0.208577206346505];
% Fit model to data.
[fitresult{2}, gof(2)] = fit( xData, yData, ft, opts );
% Plot fit with data.
figure( 'Name', 'Fit2' );
h = plot( fitresult{2}, xData, yData );
legend( h, 'average vs. endpoint', 'Fit2', 'Location', 'NorthEast', 'Interpreter', 'none' );
% Label axes
xlabel( 'endpoint', 'Interpreter', 'none' );
ylabel( 'average', 'Interpreter', 'none' );
grid on
end
function R2 = calculateR2(z,z_est)
r = z-z_est;
normr = norm(r);
SSE = normr.^2;
SST = norm(z-mean(z))^2;
R2 = 1 - SSE/SST;
end
function testfall = testfall(FL1F,FL2F,FL3F,FL4F,FL5F,FR1F,FR2F,FR3F,FR4F,FR5F,FF1F,FF2F,FF3F,FF4F,FF5F,FB1F,FB2F,FB3F,FB4F,FB5F,Timetable)
[Lfitresultx,Laveragex] = fitdata(FL1F,FL2F,FL3F,FL4F,FL5F,'x');
[Lfitresulty,Laveragey] = fitdata(FL1F,FL2F,FL3F,FL4F,FL5F,'y');
[Lfitresultz,Laveragez] = fitdata(FL1F,FL2F,FL3F,FL4F,FL5F,'z');
[Rfitresultx,Raveragex] = fitdata(FR1F,FR2F,FR3F,FR4F,FR5F,'x');
[Rfitresulty,Raveragey] = fitdata(FR1F,FR2F,FR3F,FR4F,FR5F,'y');
[Rfitresultz,Raveragez] = fitdata(FR1F,FR2F,FR3F,FR4F,FR5F,'z');
[Ffitresultx,Faveragex] = fitdata(FF1F,FF2F,FF3F,FF4F,FF5F,'x');
[Ffitresulty,Faveragey] = fitdata(FF1F,FF2F,FF3F,FF4F,FF5F,'y');
[Ffitresultz,Faveragez] = fitdata(FF1F,FF2F,FF3F,FF4F,FF5F,'z');
[Bfitresultx,Baveragex] = fitdata(FB1F,FB2F,FB3F,FB4F,FB5F,'x');
[Bfitresulty,Baveragey] = fitdata(FB1F,FB2F,FB3F,FB4F,FB5F,'y');
[Bfitresultz,Baveragez] = fitdata(FB1F,FB2F,FB3F,FB4F,FB5F,'z');
accel = todouble(Timetable);
x0 = accel(:,2);
y0 = accel(:,3);
z0 = accel(:,4);
[x,y,Fs,N] = FilterFreq(Timetable, 'x');
xF = cat(2,x0(:,1)-x0(1,1),y);
[x,y,Fs,N] = FilterFreq(Timetable, 'y');
yF = cat(2,y0(:,1)-y0(1,1),y);
[x,y,Fs,N] = FilterFreq(Timetable, 'z');
zF = cat(2,z0(:,1)-z0(1,1),y);
AlignedxL = alignsignals(xF(:,2),Laveragex(:,1));
AlignedyL = alignsignals(yF(:,2),Laveragey(:,1));
AlignedzL = alignsignals(zF(:,2),Laveragez(:,1));
AlignedxR = alignsignals(xF(:,2),Raveragex(:,1));
AlignedyR = alignsignals(yF(:,2),Raveragey(:,1));
AlignedzR = alignsignals(zF(:,2),Raveragez(:,1));
AlignedxF = alignsignals(xF(:,2),Faveragex(:,1));
AlignedyF = alignsignals(yF(:,2),Faveragey(:,1));
AlignedzF = alignsignals(zF(:,2),Faveragez(:,1));
AlignedxB = alignsignals(xF(:,2),Baveragex(:,1));
AlignedyB = alignsignals(yF(:,2),Baveragey(:,1));
AlignedzB = alignsignals(zF(:,2),Baveragez(:,1));
FL = r2v1(AlignedxL,Laveragex)+r2v1(AlignedyL,Laveragey)+r2v1(AlignedzL,Laveragez)
FR = r2v1(AlignedxR,Raveragex)+r2v1(AlignedyR,Raveragey)+r2v1(AlignedzR,Raveragez)
FF = r2v1(AlignedxF,Faveragex)+r2v1(AlignedyF,Faveragey)+r2v1(AlignedzF,Faveragez)
FB = r2v1(AlignedxB,Baveragex)+r2v1(AlignedyB,Baveragey)+r2v1(AlignedzB,Baveragez)
if FL < 0 && FR <0 && FF <0 && FB <0
disp('Not a Fall');
elseif max([FL,FR,FF,FB]) == FL
disp('Left Fall')
elseif max([FL,FR,FF,FB]) == FR
disp('Right Fall')
elseif max([FL,FR,FF,FB]) == FF
disp('Front Fall')
elseif max([FL,FR,FF,FB]) == FB
disp('Back Fall')
end
end
function [r2v1] = r2v1(values,values2)
big = max(size(values),size(values2));
xL = transpose([transpose(values),zeros(1,big(:,1) - length(transpose(values)))]);
xL2 = transpose([transpose(values2),zeros(1,big(:,1) - length(transpose(values2)))]);
r2v1 = calculateR2(xL, xL2);
end